package jp.ddo.trismegistos.action.impl;

import java.util.ArrayList;
import java.util.List;

import jp.ddo.trismegistos.bean.Entry;
import jp.ddo.trismegistos.bean.UserInfo;
import jp.ddo.trismegistos.exception.RsException;
import jp.ddo.trismegistos.service.AuthService;
import jp.ddo.trismegistos.service.EntryService;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

/**
 * TOP画面を表示するActionクラス。
 * 
 * @author y_sugasawa
 * @since 2011/06/06
 */
public class IndexAction extends AbstractAction {

	/** ログ */
	private static final Logger log = Logger.getLogger(IndexAction.class
			.getName());

	private AuthService authService;

	private EntryService entryService;

	/**
	 * {@inheritDoc}
	 */
	@Override
	public String execute() throws RsException {
		final String userId = (String) getRequest("userId");

		// validateを通過したのならばログインできる
		final UserInfo userInfo = new UserInfo();
		userInfo.setUserId(userId);
		setSession("userInfo", userInfo);

		// 日記一覧を取得
		final List<Entry> entries = new ArrayList<Entry>();// entryService.findEntry(userId);
		Entry e1 = new Entry();
		e1.setEntryId(1);
		e1.setTitle("hoge");
		Entry e2 = new Entry();
		e2.setEntryId(2);
		e2.setTitle("fuga");
		entries.add(e1);
		entries.add(e2);
		setRequest("entries", entries);

		return "index.jsp";
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public void validate() {
		if (getSession("userInfo") != null) {
			return;
		}

		final String userId = getParameter("userId");
		final String password = getParameter("password");

		setRequest("return", "login.jsp");

		if (StringUtils.isEmpty(userId)) {
			addErrors("ユーザIDが未入力です");
		}
		setRequest("userId", userId);

		if (StringUtils.isEmpty(password)) {
			addErrors("パスワードが未入力です");
		}

		// if (authService.canLogin(userId, password) == false) {
		// addErrors("ユーザIDまたはパスワードが間違えています。");
		// }
	}

	public void setAuthService(final AuthService authService) {
		this.authService = authService;
	}

	public void setEntryService(final EntryService entryService) {
		this.entryService = entryService;
	}
}
